@@ -887,6 +887,7 @@ def member_activity_create(request, administrator): |
||
| 887 | 887 |
activity_state = int(request.POST.get('activity_state', 0))
|
| 888 | 888 |
poster_kv_img_url = request.POST.get('poster_kv_img_url', '')
|
| 889 | 889 |
poster_content = request.POST.get('poster_content', '')
|
| 890 |
+ contribution_content_placeholder = request.POST.get('contribution_content_placeholder', '')
|
|
| 890 | 891 |
|
| 891 | 892 |
act = MemberActivityInfo.objects.create( |
| 892 | 893 |
brand_id=administrator.brand_id, |
@@ -914,7 +915,7 @@ def member_activity_create(request, administrator): |
||
| 914 | 915 |
activity_state=activity_state, |
| 915 | 916 |
poster_kv_img_url=poster_kv_img_url, |
| 916 | 917 |
poster_content=poster_content, |
| 917 |
- contribution_content_placeholder=contribution_content_placeholder |
|
| 918 |
+ contribution_content_placeholder=contribution_content_placeholder, |
|
| 918 | 919 |
) |
| 919 | 920 |
|
| 920 | 921 |
return response(200, 'MemberActivityInfo Create Success', u'会员活动创建成功', data={
|
@@ -964,8 +965,8 @@ def member_activity_register_list(request, administrator): |
||
| 964 | 965 |
}) |
| 965 | 966 |
|
| 966 | 967 |
|
| 967 |
-@check_admin |
|
| 968 | 968 |
@logit |
| 969 |
+@check_admin |
|
| 969 | 970 |
def member_activity_contribute_list(request, administrator): |
| 970 | 971 |
brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
|
| 971 | 972 |
activity_id = request.POST.get('activity_id', '')
|
@@ -0,0 +1,87 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+from __future__ import division |
|
| 4 |
+ |
|
| 5 |
+from django.conf import settings |
|
| 6 |
+from django_logit import logit |
|
| 7 |
+from django_response import response |
|
| 8 |
+from paginator import pagination |
|
| 9 |
+ |
|
| 10 |
+from kodo.decorators import check_admin |
|
| 11 |
+from tenancy.models import TenancyShotInfo |
|
| 12 |
+from utils.error.errno_utils import TenancyStatusCode |
|
| 13 |
+ |
|
| 14 |
+ |
|
| 15 |
+@logit |
|
| 16 |
+@check_admin |
|
| 17 |
+def shot_list(request, administrator): |
|
| 18 |
+ page = request.POST.get('page', 1)
|
|
| 19 |
+ num = request.POST.get('num', 20)
|
|
| 20 |
+ |
|
| 21 |
+ shots = TenancyShotInfo.objects.filter(status=True).order_by('-pk')
|
|
| 22 |
+ shots = [shot.data for shot in shots] |
|
| 23 |
+ shots, left = pagination(shots, page, num) |
|
| 24 |
+ |
|
| 25 |
+ return response(data={
|
|
| 26 |
+ 'shots': shots, |
|
| 27 |
+ 'left': left, |
|
| 28 |
+ }) |
|
| 29 |
+ |
|
| 30 |
+ |
|
| 31 |
+@logit |
|
| 32 |
+@check_admin |
|
| 33 |
+def shot_detail(request, administrator): |
|
| 34 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
|
|
| 35 |
+ shot_id = request.POST.get('shot_id', '')
|
|
| 36 |
+ |
|
| 37 |
+ try: |
|
| 38 |
+ shot = TenancyShotInfo.objects.get(shot_id=shot_id, status=True) |
|
| 39 |
+ except TenancyShotInfo.DoesNotExist: |
|
| 40 |
+ return response(TenancyStatusCode.TENANCY_SHOT_NOT_FOUND) |
|
| 41 |
+ |
|
| 42 |
+ return response(data={
|
|
| 43 |
+ 'shot': shot.data, |
|
| 44 |
+ }) |
|
| 45 |
+ |
|
| 46 |
+ |
|
| 47 |
+@logit |
|
| 48 |
+@check_admin |
|
| 49 |
+def shot_create(request, administrator): |
|
| 50 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
|
|
| 51 |
+ model_name = request.POST.get('model_name', '')
|
|
| 52 |
+ sn = request.POST.get('sn', '')
|
|
| 53 |
+ fittings_type = request.POST.get('fittings_type', 0)
|
|
| 54 |
+ tenancy_status = request.POST.get('tenancy_status', 0)
|
|
| 55 |
+ |
|
| 56 |
+ shot = TenancyShotInfo.objects.create( |
|
| 57 |
+ model_name=model_name, |
|
| 58 |
+ sn=sn, |
|
| 59 |
+ fittings_type=fittings_type, |
|
| 60 |
+ tenancy_status=tenancy_status, |
|
| 61 |
+ ) |
|
| 62 |
+ |
|
| 63 |
+ return response(data={
|
|
| 64 |
+ 'shot': shot.data, |
|
| 65 |
+ }) |
|
| 66 |
+ |
|
| 67 |
+ |
|
| 68 |
+@logit |
|
| 69 |
+@check_admin |
|
| 70 |
+def shot_update(request, administrator): |
|
| 71 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
|
|
| 72 |
+ shot_id = request.POST.get('shot_id', '')
|
|
| 73 |
+ model_name = request.POST.get('model_name', '')
|
|
| 74 |
+ sn = request.POST.get('sn', '')
|
|
| 75 |
+ fittings_type = request.POST.get('fittings_type', 0)
|
|
| 76 |
+ tenancy_status = request.POST.get('tenancy_status', 0)
|
|
| 77 |
+ |
|
| 78 |
+ shot, _ = TenancyShotInfo.objects.update_or_create(shot_id=shot_id, defaults={
|
|
| 79 |
+ 'model_name': model_name, |
|
| 80 |
+ 'sn': sn, |
|
| 81 |
+ 'fittings_type': fittings_type, |
|
| 82 |
+ 'tenancy_status': tenancy_status, |
|
| 83 |
+ }) |
|
| 84 |
+ |
|
| 85 |
+ return response(data={
|
|
| 86 |
+ 'shot': shot.data, |
|
| 87 |
+ }) |
@@ -0,0 +1,42 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+from __future__ import division |
|
| 4 |
+ |
|
| 5 |
+from django.conf import settings |
|
| 6 |
+from django_logit import logit |
|
| 7 |
+from django_response import response |
|
| 8 |
+from paginator import pagination |
|
| 9 |
+ |
|
| 10 |
+from tenancy.models import TenancyShotInfo |
|
| 11 |
+from utils.error.errno_utils import TenancyStatusCode |
|
| 12 |
+ |
|
| 13 |
+ |
|
| 14 |
+@logit |
|
| 15 |
+def shot_list(request): |
|
| 16 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
|
|
| 17 |
+ page = request.POST.get('page', 1)
|
|
| 18 |
+ num = request.POST.get('num', 20)
|
|
| 19 |
+ |
|
| 20 |
+ shots = TenancyShotInfo.objects.filter(status=True).order_by('-pk')
|
|
| 21 |
+ shots = [shot.data for shot in shots] |
|
| 22 |
+ shots, left = pagination(shots, page, num) |
|
| 23 |
+ |
|
| 24 |
+ return response(data={
|
|
| 25 |
+ 'shots': shots, |
|
| 26 |
+ 'left': left, |
|
| 27 |
+ }) |
|
| 28 |
+ |
|
| 29 |
+ |
|
| 30 |
+@logit |
|
| 31 |
+def shot_detail(request): |
|
| 32 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
|
|
| 33 |
+ shot_id = request.POST.get('shot_id', '')
|
|
| 34 |
+ |
|
| 35 |
+ try: |
|
| 36 |
+ shot = TenancyShotInfo.objects.get(shot_id=shot_id, status=True) |
|
| 37 |
+ except TenancyShotInfo.DoesNotExist: |
|
| 38 |
+ return response(TenancyStatusCode.TENANCY_SHOT_NOT_FOUND) |
|
| 39 |
+ |
|
| 40 |
+ return response(data={
|
|
| 41 |
+ 'shot': shot.data, |
|
| 42 |
+ }) |
@@ -5,7 +5,7 @@ from django_file_upload import views as file_views |
||
| 5 | 5 |
|
| 6 | 6 |
from api import (admin_views, clerk_views, complement_views, distributor_views, encrypt_views, express_views, log_views, |
| 7 | 7 |
maintenance_point_views, maintenance_views, mch_views, member_views, model_views, operator_views, |
| 8 |
- refresh_views, sr_views, staff_views, wx_views, wxa_views) |
|
| 8 |
+ refresh_views, sr_views, staff_views, tenancy_admin_views, tenancy_views, wx_views, wxa_views) |
|
| 9 | 9 |
from miniapp import qy_views |
| 10 | 10 |
from miniapp import views as mini_views |
| 11 | 11 |
from page import oauth_views, sale_views, screen_views |
@@ -307,15 +307,39 @@ urlpatterns += [ |
||
| 307 | 307 |
|
| 308 | 308 |
# 维修 |
| 309 | 309 |
urlpatterns += [ |
| 310 |
+ # 小程序接口 |
|
| 310 | 311 |
url(r'^maintenance/add$', maintenance_views.maintenance_add, name='maintenance_add'), |
| 311 | 312 |
url(r'^maintenance/delete$', maintenance_views.maintenance_delete, name='maintenance_delete'), |
| 312 | 313 |
url(r'^maintenance/list$', maintenance_views.maintenance_list, name='maintenance_list'), |
| 313 | 314 |
url(r'^maintenance/detail$', maintenance_views.maintenance_detail, name='maintenance_detail'), |
| 314 | 315 |
|
| 316 |
+ # 后台管理接口 |
|
| 315 | 317 |
url(r'^admin/maintenance/update$', maintenance_views.maintenance_update, name='maintenance_update'), |
| 316 | 318 |
url(r'^admin/maintenance/list$', maintenance_views.maintenance_list, name='maintenance_list'), |
| 317 | 319 |
url(r'^admin/maintenance/close$', maintenance_views.maintenance_close, name='maintenance_close'), |
| 318 | 320 |
|
| 319 | 321 |
url(r'^admin/maintenance/tracking/info$', maintenance_views.maintenance_tracking_info, name='maintenance_tracking_info'), |
| 322 |
+ |
|
| 323 |
+ # 快递信息回调接口 |
|
| 320 | 324 |
url(r'^maintenance/tracking/info/callback$', maintenance_views.maintenance_tracking_info_callback, name='maintenance_tracking_info_callback'), |
| 321 | 325 |
] |
| 326 |
+ |
|
| 327 |
+# 租赁 |
|
| 328 |
+urlpatterns += [ |
|
| 329 |
+ # 小程序接口 |
|
| 330 |
+ url(r'^tenancy/shot/list$', tenancy_views.shot_list, name='tenancy_shot_list'), |
|
| 331 |
+ url(r'^tenancy/shot/detail$', tenancy_views.shot_detail, name='tenancy_shot_detail'), |
|
| 332 |
+ |
|
| 333 |
+ # 后台管理接口 |
|
| 334 |
+ url(r'^admin/tenancy/shot/list$', tenancy_admin_views.shot_list, name='admin_tenancy_shot_list'), |
|
| 335 |
+ url(r'^admin/tenancy/shot/detail$', tenancy_admin_views.shot_detail, name='admin_tenancy_shot_detail'), |
|
| 336 |
+ url(r'^admin/tenancy/shot/create$', tenancy_admin_views.shot_create, name='admin_tenancy_shot_create'), |
|
| 337 |
+ url(r'^admin/tenancy/shot/update$', tenancy_admin_views.shot_update, name='admin_tenancy_shot_update'), |
|
| 338 |
+] |
|
| 339 |
+ |
|
| 340 |
+# 租赁申请 |
|
| 341 |
+urlpatterns += [ |
|
| 342 |
+ # 小程序接口 |
|
| 343 |
+ |
|
| 344 |
+ # 后台管理接口 |
|
| 345 |
+] |
@@ -16,17 +16,17 @@ class PermissionStatusCode(BaseStatusCode): |
||
| 16 | 16 |
class AdministratorStatusCode(BaseStatusCode): |
| 17 | 17 |
""" 操作员相关错误码 4002xx """ |
| 18 | 18 |
ADMINISTRATOR_NOT_FOUND = StatusCodeField(400201, 'Administrator Not Found', description=u'管理员不存在') |
| 19 |
- ADMINISTRATOR_PERMISSION_DENIED = StatusCodeField(508002, 'Administrator Permission Denied', description=u'管理员权限不足') |
|
| 19 |
+ ADMINISTRATOR_PERMISSION_DENIED = StatusCodeField(400202, 'Administrator Permission Denied', description=u'管理员权限不足') |
|
| 20 | 20 |
|
| 21 |
- # 密码 |
|
| 22 |
- ADMINISTRATOR_PASSWORD_ERROR = StatusCodeField(400202, 'Administrator Password Error', description=u'管理员密码错误') |
|
| 23 | 21 |
# 手机号 |
| 24 | 22 |
ADMINISTRATOR_PHONE_ALREADY_EXISTS = StatusCodeField(400205, 'Administrator Phone Already Exists', description=u'管理员手机号已经存在') |
| 23 |
+ # 密码 |
|
| 24 |
+ ADMINISTRATOR_PASSWORD_ERROR = StatusCodeField(400210, 'Administrator Password Error', description=u'管理员密码错误') |
|
| 25 | 25 |
# 状态 |
| 26 | 26 |
ADMINISTRATOR_NOT_ACTIVATED = StatusCodeField(400215, 'Administrator Not Activated', description=u'管理员未激活') |
| 27 | 27 |
ADMINISTRATOR_HAS_DISABLED = StatusCodeField(400216, 'Administrator Has Disabled', description=u'管理员已禁用') |
| 28 | 28 |
ADMINISTRATOR_HAS_DELETED = StatusCodeField(400217, 'Administrator Has Deleted', description=u'管理员已删除') |
| 29 |
- # 管理员 |
|
| 29 |
+ # 核销员 |
|
| 30 | 30 |
MAINTENANCE_NOT_FOUND = StatusCodeField(400251, 'Maintenance Not Found', description=u'核销员不存在') |
| 31 | 31 |
|
| 32 | 32 |
|
@@ -211,3 +211,8 @@ class MaintenanceStatusCode(BaseStatusCode): |
||
| 211 | 211 |
""" 维修相关错误码 5080xx """ |
| 212 | 212 |
MAINTENACE_NOT_FOUND = StatusCodeField(508001, 'Maintenance Not Found', description=u'维修不存在') |
| 213 | 213 |
MAINTENACE_PERMISSION_DENIED = StatusCodeField(508002, 'Maintenance Permission Denied', description=u'维修权限不足') |
| 214 |
+ |
|
| 215 |
+ |
|
| 216 |
+class TenancyStatusCode(BaseStatusCode): |
|
| 217 |
+ """ 租赁相关错误码 5090xx """ |
|
| 218 |
+ TENANCY_SHOT_NOT_FOUND = StatusCodeField(509001, 'Tenancy Shot Not Found', description=u'租赁镜头不存在') |